Start sketching in Forerunner lap handling to help Cutter Brown.
authorrobertl <robertl@f51c46e8-681c-474f-0cfe-069cfd0219fb>
Wed, 2 Nov 2005 15:57:00 +0000 (15:57 +0000)
committerrobertl <robertl@f51c46e8-681c-474f-0cfe-069cfd0219fb>
Wed, 2 Nov 2005 15:57:00 +0000 (15:57 +0000)
gpsbabel/jeeps/gps.h
gpsbabel/jeeps/gpsapp.c
gpsbabel/jeeps/gpsprot.h

index b1de25c0e5edf9a0eaa55157be9d2466d7878bb6..327b4e5651ffb3bec9541e70b3d639eef9869d53 100644 (file)
@@ -155,6 +155,20 @@ typedef struct GPS_SWay
     time_t   Time;             /* Unix time */
 } GPS_OWay, *GPS_PWay;
 
+/*
+ * Forerunner Lap data.
+ */
+typedef struct GPS_SLap_Data {
+       time_t  start_time;
+       uint32  total_time;     /* Hundredths of a second */
+       float   total_distance; /* In meters */
+       double  begin_lat; 
+       double  begin_lon; 
+       double  end_lat;
+       double  end_lon;
+       int16   calories;
+       UC      track_index;
+} GPS_OLap_Data, *GPS_PLap_Data;
 
 
 
index 99030d40593ee0824d0bdbd6035a8f9c4e29f333..1f387fa6fc1820fe0190c434e1e412ad0a0cb45f 100644 (file)
@@ -606,8 +606,11 @@ static void GPS_A001(GPS_PPacket packet)
                 */
                continue;
            }
-
-
+           else if (lasta < 1000)
+           {
+               if (data == 906)
+                   gps_lap_type = pD906;
+           }
        }
     }
 
@@ -5838,6 +5841,49 @@ void GPS_D800_Get(GPS_PPacket packet, GPS_PPvt_Data *pvt)
     return;
 }
 
+/* @func GPS_D906_Get ******************************************************
+**
+** Convert packet to lap structure
+**
+** @param [r] packet [GPS_PPacket] packet
+** @param [w] pvt [GPS_PLap_Data *] lap structure
+**
+** @return [void]
+************************************************************************/
+void GPS_D906_Get(GPS_PPacket packet, GPS_PLap_Data *Lap)
+{
+    UC *p;
+    uint32 t;
+    
+    p = packet->data;
+
+    t = GPS_Util_Get_Uint(p);
+    (*Lap)->start_time = GPS_Math_Gtime_To_Utime((time_t)t);
+    p+=sizeof(uint32);
+
+    (*Lap)->total_time = GPS_Util_Get_Int(p);
+    p+=sizeof(int32);
+
+    (*Lap)->total_distance = GPS_Util_Get_Float(p);
+    p+=sizeof(float);
+
+
+    (*Lap)->begin_lat = GPS_Math_Semi_To_Deg(GPS_Util_Get_Int(p));
+    p+=sizeof(int32);
+    (*Lap)->begin_lon = GPS_Math_Semi_To_Deg(GPS_Util_Get_Int(p));
+    p+=sizeof(int32);
+    (*Lap)->end_lat = GPS_Math_Semi_To_Deg(GPS_Util_Get_Int(p));
+    p+=sizeof(int32);
+    (*Lap)->end_lon = GPS_Math_Semi_To_Deg(GPS_Util_Get_Int(p));
+    p+=sizeof(int32);
+
+    (*Lap)->calories = GPS_Util_Get_Short(p);
+    p+=sizeof(int16);
+
+    (*Lap)->track_index = *p++;
+
+    return;
+}
 
 /* 
  *  It's unfortunate that these aren't constant and therefore switchable,
index 1d0eb6a426c4e73bd9a489c9019e4e257751cea0..f3817a11ab4f8f1b33bf6a9ea7fa45d1850d01fe 100644 (file)
@@ -234,6 +234,12 @@ int32 gps_position_type;
 
 int32 gps_pvt_type;
 
+/*
+ * Lap Data Type
+ */
+#define pD906 906
+
+int32 gps_lap_type;
 
 /*
  * Link protocol type